/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package cr.ac.una.sive.managed;

import cr.ac.una.sive.entidad.Usuario;
import cr.ac.una.sive.entidadLocal.UsuarioLocal;
import cr.ac.una.sive.sessionbean.UsuarioFacade;
import cr.ac.una.sive.sessionbean.UsuarioFacadeLocal;
import java.util.ArrayList;
import java.util.List;
import javax.ejb.EJB;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import javax.persistence.TypedQuery;

/**
 *
 * @author claribel
 */
@ManagedBean
@SessionScoped
public class UsuarioFacadeManaged {
    @EJB(mappedName = "ejb/UsuarioFacade")
    private UsuarioFacadeLocal usuarioFacade;

    EntityManagerFactory emf=Persistence.createEntityManagerFactory("una-sivePU");
    EntityManager em=emf.createEntityManager();
    
     private ArrayList<UsuarioLocal> listaUsuarios = null;       
    public UsuarioFacadeManaged(UsuarioFacadeLocal usuarioFacade) {
        this.usuarioFacade = usuarioFacade;
    }
    private UsuarioLocal usuarioLocal = new UsuarioLocal();

    public UsuarioLocal getUsuarioLocal() {
        return usuarioLocal;
    }

    public void setUsuarioLocal(UsuarioLocal usuarioLocal) {
        this.usuarioLocal = usuarioLocal;
    }
    
    public Usuario obtenerUsuario(){
     Usuario u = new Usuario();
     u.setNombre1(usuarioLocal.getNombre1());
     u.setNombre2(usuarioLocal.getNombre2());
     u.setApellido1(usuarioLocal.getApellido1());
     u.setApellido2(usuarioLocal.getApellido2());
     u.setCedula(usuarioLocal.getCedula());
     u.setTelefono1(usuarioLocal.getTelefono1());
     u.setTelefono2(usuarioLocal.getTelefono2());
     u.setCantidadMarchamo(usuarioLocal.getCantidadMarchamo());
     u.setCorreoElectronico(usuarioLocal.getCorreoElectronico());
     u.setEstadoCivil(usuarioLocal.getEstadoCivil());
     u.setCentroTrabajoEscuela(usuarioLocal.getCentroTrabajoEscuela());
     //usuarioFacade.find(usuarioLocal.getIdUsuario());
     u.setIdUsuario(usuarioLocal.getIdUsuario());
     u.setSexo(usuarioLocal.getSexo());
     //usuarioFacade.create(u);
     return u;
    }
    
    public List consultaCedula(String cedula) {
          FacesMessage message = new FacesMessage();
          FacesContext context = FacesContext.getCurrentInstance();
        try{
           
            TypedQuery<UsuarioLocal> query = em.createQuery(
            "SELECT c FROM Usuario c ", //this.usuarioLocal.getCedula() 
//                    cedula+ "'",
            UsuarioLocal.class);
            List u;
            u = query.getResultList();            
            if(u.isEmpty())
                return null;
            else
                return u;
        }catch(Exception e){
            message.setSeverity(FacesMessage.SEVERITY_INFO);
            message.setSummary(e.getMessage());
            message.setDetail(e.getMessage());    
            context.addMessage("Campos", message);
            return null;
        }
    }
    public List getListaUsuarios() { 
//       listaMarchamos = null;
        if (listaUsuarios == null) { 
            ArrayList listaMarchamos2 = new ArrayList(usuarioFacade.findAll());// consultaCedula(this.usuarioLocal.getCedula());
            
        listaUsuarios = new ArrayList(); 
        Usuario usuario; 
        for (int i = 0; i < listaMarchamos2.size(); i++) { 
            usuario = (Usuario) listaMarchamos2.get(i); 
        listaUsuarios.add(new UsuarioLocal(usuario)); 
        } 
        
        } //sort(); 
        return listaUsuarios;
        
    }
    /**
     * Creates a new instance of UsuarioFacadeManaged
     */
    public UsuarioFacadeManaged() {
    }
}
